package leetcode_200;

/**
 *@author 周杨
 *NumberOf1Bits_191 判断一个数的二进制数中有多少个1位
 *describe:不断右移此数 直至为0  累计与1与后的结果
 *2018年6月11日 上午9:40:37
 */
public class NumberOf1Bits_191 {

	public static void main(String[] args) {
		NumberOf1Bits_191 test=new NumberOf1Bits_191();
		System.out.println(test.hammingWeight(128));

	}
	/**
	 * describe: AC 30%  前面可能不用判断 
	 * 2018年6月11日 上午9:41:22
	 */
	public int hammingWeight(int n) {
		  int res=0; 
	      for(int i=0;i<32;++i) {
	    	  res+= n&1;
	    	  n>>>=1;
	      }  
	      return res;
	}
	
	/**
	 * describe:AC 99%
	 * 2018年6月11日 上午9:41:52
	 */
	public int hammingWeight1(int n) {
        int count=0;
        while(n!=0)
        {
            count+=(n&1);
            n=n>>>1;
        }
        return count;
    }

}
